![]() | Define Dialogs | Constraint Procedure | ![]() |
Constraint_tree execution from Decision Trees is imposed by setting the Object Control Property for Inference - constraintMode to Knowledge (this property has been set to Knowledge and hidden in the base class).
When a constraint tree is enabled, any value split combination which leads to an 'Invalid' or 'Empty' outcome Leaf is considered invalid.
This technique has far reaching implications in that engineered generative knowledge can be used as part of constraint driven requirement capture knowledge. It leverages the unique power of XpertRule knowledge engineering (knowledge elicitation, knowledge structuring and transparent graphical representation and navigation) for requirement capture modelling.
This technique is also able to constrain the Outcome of a Decision Tree with its Attributes. This means that an outcome of a decision tree can be captured (i.e. at run time) like any other Attribute. It works both ways. That is, Attribute selections can constrain the Outcome selection and the Outcome selection can constrain the Attribute selections. This is of vital importance in applications where the user has the choice of either, selecting items directly, or selecting the features which then lead to the automatic selection of the item. This feature is also very relevant to "upgrade" configuration applications, where existing Outcome selections have to be considered before making any further selections.
Using Constraint trees
In this example, a List type constraint tree has been created (shown on the right), which has three Component_lists, each with three values. The tree shows which combinations of these components and values leads to which recommended Part and which others are Invalid combinations.
When the user dialog (shown on the left) is encountered at run time, values could be entered for both Comp_list_1 and Comp_list_2. As the focus point moves between each input control, the constraint tree would be examined for valid/invalid values. Depending upon the values that the user selects, the Value_1, Value_2, or Value_3 selections would be disabled/enabled according to whether Invalid or Part_1, Part_2 or Part_3 is the leaf outcome.
Note that the Constraint tree is not executed via inference. That is, the decision tree is NOT subject to the full Inference process when its used as a Constraint tree. The constraint tree will not need to obtain a value for Comp_list_2, as would be the case during inference of a standard decision tree. XpertRule can still populate the list box values for Comp_list_1 and Comp_list_3 and grey out the invalid values, without needing a current value for Comp_list_2.